package xyz.itpath.service;

import com.baomidou.mybatisplus.extension.service.IService;
import xyz.itpath.entity.OssFile;

import java.io.InputStream;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;

/**
 * 文件管理服务
 *
 * @author zhaomengru
 * create by 2024/1/3 - 21:16
 */
public interface IOssFileService extends IService<OssFile> {

    /**
     * 文件
     *
     * @param inputStream 文件输入流
     * @param fileName    文件名
     * @return 文件基本信息
     */
    OssFile uploadFile(InputStream inputStream, String fileName,  String bucketName);



    default String stsToken(Long fileId, Duration duration) {
        return stsToken(fileId, duration, new HashMap<>(0));
    }

    /**
     * 获取stsToken
     *
     * @param fileId   文件id
     * @param duration 有效期
     * @param headers  请求头
     * @return stsToken
     */
    String stsToken(Long fileId, Duration duration, Map<String, String> headers);

    /**
     * 获取文件输入流
     *
     * @param fileId 文件id
     * @return 文件输入流
     */
    InputStream downloadFile(Long fileId);

    /**
     * 删除文件
     *
     * @param fileId 文件id
     */
    void deleteFile(Long fileId);
}
